package collections.copyonwrite;

import java.util.ArrayList;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * 描述：演示CopyOnWriteArrayList可以在遍历的时候修改数据，但是ArrayList不行
 */

public class CopyOnWriteArrayListDemo01 {
    public static void main(String[] args) {
        CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
        // 添加元素
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        // 遍历list
        for (String s : list) {
            System.out.println(list + " " + s);
            // 在遍历的过程中，修改list
            if (s.equals("c")) {
                list.remove(s);
                list.add("f");
            }
        }
        System.out.println(list);
    }
}

/**
 * output:
 * [a, b, c, d, e] a
 * [a, b, c, d, e] b
 * [a, b, c, d, e] c
 * [a, b, d, e, f] d
 * [a, b, d, e, f] e
 * [a, b, d, e, f]
 */